package kr.co.doriclassic.chapter25.chat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class QuizServer {
	public static void main(String[] args) throws IOException {
		
		ServerSocket serverSocket = null;
		Socket clientSocket = null;
		PrintWriter out = null;
		BufferedReader in = null;
		
		//서버소켓 생성
		try {
			serverSocket = new ServerSocket(5555);
		} catch (IOException e) {
			System.err.println("포트에 연결 불가 : 5555");
			System.exit(1);//비정상종료1, 정상종료0
		}
		
		
		//클라이언트소켓을 받아들일 준비
		try {
			clientSocket = serverSocket.accept();
		} catch (IOException e) {
			System.err.println("소켓 accept() 실패 : 5555");
			System.exit(1);//비정상종료1, 정상종료0
		}//연결되면
		
		//클라이언트로 보낼 메시지
		out = new PrintWriter(clientSocket.getOutputStream(), true);
		//클라이언트로부터 받은 메시지
		in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
		
		//받은 메시지
		String inputLine;
		//보낼 메시지
		String outputLine;
		
		
		QuizProtocol qp = new QuizProtocol();
		
		//처음문장 실행
		outputLine = qp.process(null);
		//클라이언트에게 시작됨을 전송 종료?(y/n)
		out.println(outputLine);
		
		while((inputLine = in.readLine())!=null){//마지막 문장이 아닐 때까지 한줄 씩 읽음
			outputLine = qp.process(inputLine);//y또는 n이 서버로 보내짐
			out.println(outputLine);//확인차 클라이언트에게 보내줌
			
			if(outputLine.equalsIgnoreCase("quit")){
				break;//클라이언트가 quit를 보내오면 종료
			}
		}
		//순서를 지켜라 읽은 순서의 역순
		in.close();
		out.close();
		clientSocket.close();
		serverSocket.close();
		
	}
}
